<?
class pWord {
    var $mykey = "THISisMyKey";
    function getEncryptedPass($len){
        $pass = $this->makeRandomPassword($len);
        return $this->linencrypt($pass);
    }
    function linencrypt($pass) {
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); //get vector size on ECB mode 
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); //Creating the vector
        $cryptedpass = mcrypt_encrypt (MCRYPT_RIJNDAEL_256, $this->mykey, $pass, MCRYPT_MODE_ECB, $iv); //Encrypting using MCRYPT_RIJNDAEL_256 algorithm 
    return $cryptedpass;
    }

    function lindecrypt($enpass) {
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); 
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
        $decryptedpass = mcrypt_decrypt (MCRYPT_RIJNDAEL_256, $this->mykey, $enpass, MCRYPT_MODE_ECB, $iv); //Decrypting...
    return rtrim($decryptedpass);
    }
    function makeRandomPassword($len) { 
          $salt = "ABCDEFGHJKLMNPRSTUVWXYZ0123456789abchefghjkmnpqrstuvwxyz"; 
          srand((double)microtime()*1000000); 
        for($i = 0;$i < $len;$i++) { 
            $num = rand() % 56; 
            $tmp = substr($salt, $num, 1); 
            $pass = $pass . $tmp; 
        } 
    return $pass; 
    }
}  

$pWord = new pWord();
echo $pass = $pWord->getEncryptedPass(20);
echo "<BR><BR>";
echo $pWord->lindecrypt($pass);
?> 